ProSphere Controller Lite BETA for Operation Flashpoint (OFP) by Bohemia Interactive Studio (BIS).

OFP v1.85 REQUIRED.

I SAY AGAIN: THIS SOFTWARE WILL ONLY WORK WITH AT LEAST OFP v1.85.

IN SHORT, DON'T BOTHER WITH THIS SOFTWARE UNLESS YOU ARE USING AT LEAST OFP v1.85. IF NOT, THIS
SOFTWARE WILL NOT WORK. FULL STOP. FOR EXAMPLE, IT WON'T WORK WITH v1.75. YOU NEED v1.85. CLEAR?
PATCH YOUR COPY OF OFP TO v1.85. YES, TO DO THIS YOU HAVE TO BUY OFP:RESISTANCE FIRST. ENOUGH SAID.

- ProSphere Controller Lite was programmed by me, Prospero (Anthony Webber - awebber@tiscali.co.uk).
- ProSphere Controller Lite is copyright (c) Anthony Webber, 2002.
- ProSphere Controller Lite is freeware. You may freely distribute, use and (hopefully) enjoy this
software.
- I ask that you give me specific credit should you make use of ProSphere Controller Lite or
original ProSphere Controller Lite concepts within zero-cost scripts / add-ons.

- Should you make use of ProSphere Controller Lite or original ProSphere Controller Lite concepts
within scripts / add-ons / ANY software related to OFP from which you BENEFIT FINANCIALLY, you
MAY NOT distribute / use ProSphere Controller Lite or original ProSphere Controller Lite concepts
without my express written permission. Bear in mind that if you create scripts / add-ons / ANY
software related to OFP from which you wish to BENEFIT FINANCIALLY, you will have to ask BIS for
permission first anyway. Consult BIS's legal terms for details.

- "Try everything once. Except for incest and folk dancing."

- I would like to give credit to: The Western and Eastern Fronts.
- AND: Suma - for helping with a number of issues, and of course, for OFP in the first place!
- AND: Dinger - for lots of help as I struggled, and continue to struggle, up the OFP scripting
ladder.
- AND: Amalfi - for his excellent MakePBO v1.1 program.

- To INSTALL ProSphere Controller Lite into one of your user missions:
- 1) Copy the prosphere.pbo file into your (Resistance) Addons directory. You only have to do
this once.
- 2) Now, copy all the (.sqs) files beginning with the letters "PS" into your user mission folder.
You can copy the README file there too - it won't matter.
- 3) OK, load up OFP and add three triggers into your user mission using the Mission Editor.
  a) You MUST name the three triggers PS1, PS2 and PS3. But don't worry - there's no need to fiddle
with any of the other trigger settings.
  b) Place the triggers close to each other (within, say, 100 meters of each other) anywhere over
land, NOT water. Land, NOT water - THIS IS VERY IMPORTANT.
  c) Ensure they are not grouped (i.e. ensure that they are not connected by blue lines). Ungroup
them if necessary.
- 4) Finally, execute PSinit.sqs in any way you like - perhaps execute it in your init.sqs file.
You're done!

- To CONFIGURE ProSphere Controller Lite, keep reading.

- What is ProSphere Controller Lite?

- ProSphere Controller Lite (or just "ProSphere") is for OFP gamers, mission editors, and
add-on creators. Simply put, it allows you to interact with the OFP Game World in ways that were
previously thought impossible.

- ProSphere exploits a number of original "tricks" within OFP to SIMULTANEOUSLY provide FIVE(*)
fully independent, configurable, high-bandwidth, high-resolution, REAL-TIME axes of keyboard
control input using the "main" game key assignments, and ALL DIRECTLY ACCESSIBLE to your OFP
scripts via global variables. ProSphere therefore obviates the problem of very slow control input
associated with laboriously selecting actions from the Action Menu (which is slow even when using
automated macros, as is, albeit to a lesser extent, the Dialog method of input introduced in OFP
v1.75). You can of course still use the Action Menu in the normal way for control input that does
not require speed & resolution. Furthermore, you can combine ProSphere input with Action Menu
input and / or Dialog input. The result can be very powerful.

- Applications of ProSphere can be anything from simple interactions, like being able to walk
up to a wounded squad-mate and quickly heal him / re-arm him / share equipment & data with him,
to manipulating multi-axis in-game 3D switches, to locking / unlocking / positioning doors, to
throwing objects from vehicles, to controlling a real-time safe-cracking puzzle, to implementing
complex in-game 3D menus, to placement systems for setting and planting explosives, and even to
advanced concepts such as controlling your own real-time (scripted) physics models. This, in
fact, is why I developed the software in the first place - to provide a means of controlling a
helicopter UAV flight maths-model I had implemented in OFP's scripting language, and which I
had "attached" to an object in the OFP Game World. I needed at least four script-accessible
REAL-TIME PSEUDO-ANALOG axes to control the helicopter UAV effectively - and an early version of
the ProSphere concept proved the answer to this somewhat thorny problem. I then realised that
the interface I had devised could be developed further to provide a rather nice feature for
other OFP enthusiasts. ProSphere Controller v1.0 is the result.

- (*) In fact, ProSphere provides not FIVE axes, but SIX. However, a limitation is placed upon
the use of the sixth axis (the ProSphere C-Axis), which is this: Manipulating the C-Axis at the
same time as attempting to manipulate the X-Axis will have the effect that X-Axis response is
overridden, and vice versa. Practically speaking, it is unlikely that this will matter in the
majority of cases, but do bear it in mind. This limitation is simply a consequence of what can
/ cannot be achieved in OFP scripting - but of course, in a perfect world I'd still like to find
a work-around for this.

- The full version (ProSphere Controller v1.0) provides in-game 3D graphical "Items" to
facilitate complex user interactions. ProSphere Controller v1.0 is currently under development.
ProSphere gets its name from these "Items", as they all happen to be spherical in shape. I will
do my best to ensure that ProSphere Controller v1.0 will be compatible with any scripts / add-ons
developed to work with ProSphere Controller Lite.

- If you are using the default OFP key assignments, the ProSphere Axes are controlled as follows.
If you have changed the default keys, then you should use whatever you have assigned instead:

- OFP Command		Key(s)			ProSphere Axis			Global Variable Name
- -------------		------			--------------			--------------------
- Strafe right		Right Arrow or D	X-Axis +			PS select 0
- Strafe left		Left Arrow or A		X-Axis -			PS select 0
- Forwards		Up Arrow or W		Y-Axis +			PS select 1
- Backwards		Down Arrow or S		Y-Axis -			PS select 1
- Up			Page Up or Q		Z-Axis +			PS select 2
- Down			Page Down or Z		Z-Axis -			PS select 2
- Look right		Keypad 6		A-Axis +			PS select 3
- Look left		Keypad 4		A-Axis -			PS select 3
- Look up		Keypad 8		B-Axis +			PS select 4
- Look down		Keypad 2		B-Axis -			PS select 4
- Turn right		C			C-Axis +			PS select 5
- Turn left		X			C-Axis -			PS select 5
- Fast forwards		E			Player MoveLock (toggle)

- To ACCESS ProSphere Axes information:
- ProSphere Axes information is stored in a global array called PS. It has six elements (from 0 to 5).
You simply access this array for the axes information, at any time.
- Each ProSphere Axis provides a floating point number in the range -1 to +1 with 0 being the centre
point.
- When ProSphere is ON, Player MoveLock can be toggled using the E key. MoveLock locks out conventional
control of the player / player's vehicle, and the view will change to that of the MoveLock Camera. The
MoveLock Camera's behaviour can be set up in the ProSphere configuration section (see the beginning
of PS.sqs). This mode is useful for times when you want to use ONLY the ProSphere Axes.

- Reserved ProSphere global variable names all begin with "PS". DO NOT DUPLICATE them in your scripts.

- PS
- PScam
- PSfp
- PSin
- PSo
- PSon
- PSop
- PSp1
- PSp2
- PSr
- PSref
- PSwi
- PSwid

- Reserved ProSphere filenames all begin with "PS". DO NOT DUPLICATE them as names for your scripts.

- PS
- PSa
- PSb
- PSc
- PSda
- PSdb
- PSdc
- PSinit
- PSs
- PSv
- PSw
- PSx
- PSy

- Reserved ProSphere object names all begin with "PS". DO NOT DUPLICATE them in your scripts.

- PS1 (a trigger)
- PS2 (a trigger)
- PS3 (a trigger)
- PSl (a gamelogic)
- PSw1 (a special gamelogic widget)
- PSw2 (a special gamelogic widget)
- PSw3 (a special gamelogic widget)
- PSc (the spoon)
- PSv (the MoveLock Camera)

- Notice therefore that all native ProSphere global variables, filenames, and objects begin with
the letters "PS". This makes it easy for you to avoid conflicts (and future conflicts as ProSphere
is developed) simply by ensuring that you do not use these initial letters for your own global
variables, filenames and objects. Note that you must avoid all case combinations - i.e. "PS", "ps",
"Ps" and "pS". Naturally, it's OK to have *local* variable names like "_ps" within your own scripts.

- ProSphere Axes may also be controlled by using a SUITABLE PROGRAMMABLE mouse. I am hoping to include
a suitable freeware / shareware programmable mouse driver with this distribution at some stage in the
future. It must offer driver-level keyboard emulation to work with OFP. If the demand is there, I may
write one myself.

- ProSphere Axes may also be controlled by using a SUITABLE PROGRAMMABLE joystick such as the
ThrustMaster Cougar.
- You will need to create / load an appropriate profile into your particular joystick / joystick driver.
I am hoping to include a suitable profile with this distribution at some stage in the future. PLEASE
NOTE that this version of ProSphere is NOT really suitable for "absolute" modes of operation via
joystick. This is high on my list of things to address, but I will first have to wait until I have a
Cougar with which to test.

- FEATURES:
- The response of each ProSphere Axis is fully and independently configurable (see beginning of PS.sqs).
- If configured identically, the response of all ProSphere Axes is identical.
- ProSphere's response is identical regardless of which vehicle (if any) the player is occupying.
- ProSphere's response is unaffected by the pace of Game World Time (the setAccTime function etc).
- ProSphere adjusts its response to remain identical across PC systems with differing performance.
- ProSphere adds one (and only one) action to the player's Action Menu - the ProSphere ON/OFF action
(toggle). Wherever you go in the OFP world, this action will always be the first action in your Action
Menu list.

- COMMENTS:
- I have tried to reduce the number of conditional phrases to a minimum as these are executed relatively
slowly in OFP. Please do contact me if you spot any (other) possible optimisations.

- KNOWN ISSUES:
- Using Zoom (Keypad + and Keypad - keys by default) whilst ProSphere is ON changes ProSphere's A-Axis
& B-Axis rates. Keypad - speeds them up, whereas Keypad + slows them down. I intuitively know why, but
I do not yet logically realise how. Of course, I could simply claim it's a feature rather than a bug,
but if anyone susses a fix, please let me know. Using optics or scoped weapons works fine - just don't
zoom in or out while you're using them if you want ProSphere to work properly AT THE SAME TIME. The
worst-case scenario is that you'll just have to reset ProSphere (i.e. if you're using the default keys,
simply toggle ProSphere OFF with a double-tap of your middle mouse button, and then double-tap again to
toggle ProSphere back ON - or you could double-tap your Return key instead). ProSphere will now function
properly again.
- There still seem to be some problems with OFP's addAction function (used in PSx.sqs). Occasionally
you'll get into a vehicle and find that there are two copies of the ProSphere ON/OFF action in your
Action Menu instead of one. If you know a fix, please do let me know. Fortunately, getting out of the
vehicle in question seems to solve this.

- PLEASE SEND BUG REPORTS AND FEEDBACK TO: awebber@tiscali.co.uk

- OK, that's the end of the README. Go and open PS.sqs in your text editor to configure ProSphere
Controller Lite (or you can just skip the configuration process and use the default settings)...